home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1994 October / Macformat17.cdr / Shareware City / Developers / shutdown-fx-20-c / sfx init ƒ / code ƒ / init.c < prev    next >
C/C++ Source or Header  |  1994-07-11  |  2KB  |  100 lines

  1. /**********************************************************************\
  2.  
  3. File:        init.c
  4.  
  5. Purpose:    This module handles INIT initialization and installation.
  6.             
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or
  10. (at your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program in a file named "GNU General Public License".
  19. If not, write to the Free Software Foundation, 675 Mass Ave,
  20. Cambridge, MA 02139, USA.
  21.  
  22. \**********************************************************************/
  23.  
  24. #include "init.h"
  25. #include "environment.h"
  26. #include "prefs.h"
  27. #include "really notify.h"
  28. #include "sfx meat.h"
  29. #include "sfx install.h"
  30. #include "sfx gestalt.h"
  31. #include "program globals.h"
  32.  
  33. char            gOnShutdown, gOnRestart, gChooseRandom;
  34. short            gModuleIndex;
  35.  
  36. void __GetA4(void)
  37. {
  38.     asm
  39.     {
  40.         bsr.s    @1
  41.         dc.l    0            ;  store A4 here
  42. @1        move.l    (sp)+,a1
  43.     }
  44. }
  45.  
  46. /* this be the init startup install routine thing */
  47. void main(void)
  48. {
  49.     short            resultCode;
  50.     
  51.     RememberA0();
  52.     SetUpA4();
  53.     
  54.     if ((resultCode=InitTheEnvironment())!=0)
  55.     {
  56.         StartupError(resultCode);
  57.     }
  58.     else
  59.     {
  60.         if ((resultCode=DoSetup())==0)
  61.         {
  62.             StartupGood();
  63.         }
  64.         else
  65.         {
  66.             StartupError(resultCode);
  67.         }
  68.     }
  69.     
  70.     RestoreA4();
  71. }
  72.  
  73. short DoSetup(void)
  74. {
  75.     short            resultCode;
  76.     short            vRefNum;
  77.     long            dirID;
  78.     Str255            theName;
  79.     
  80.     resultCode=PreferencesInit();
  81.     if ((resultCode!=prefs_allsWell) && (resultCode!=prefs_virginErr))
  82.         return kPrefsError;
  83.     
  84.     if ((resultCode=GetAModule(&gModuleIndex, theName, &vRefNum, &dirID))!=0)
  85.         return resultCode;
  86.     
  87.     if (!sfxGestaltFunctionInstalledQQ())
  88.     {
  89.         if ((resultCode=MakeNewGestaltSelectors())!=0)
  90.             return resultCode;
  91.         if ((resultCode=InstallTheShutdownProc(theName, vRefNum, dirID, gOnShutdown,
  92.                 gOnRestart))!=0)
  93.             return resultCode;
  94.         
  95.         SaveThePrefs();
  96.     }
  97.     
  98.     return 0;
  99. }
  100.